Skip to content

Browser-based RDP clipboard controls#28670

Open
asamborski wants to merge 5 commits intocloudflare:productionfrom
asamborski:production
Open

Browser-based RDP clipboard controls#28670
asamborski wants to merge 5 commits intocloudflare:productionfrom
asamborski:production

Conversation

@asamborski
Copy link
Contributor

Summary

This change encompasses the changelog for browser-based RDP (anticipated on Monday, March 2) as well as the necessary dev doc updates.

Screenshots (optional)

rdp-clipboard-controls

Documentation checklist

@asamborski asamborski marked this pull request as ready for review February 28, 2026 00:39
Comment on lines +232 to +270
connection_rules: {
rdp: {
allow_local_clipboard_to_remote: true,
allow_remote_clipboard_to_local: false,
},
},
}}
/>

| Parameter | Type | Description |
| --- | --- | --- |
| `allow_local_clipboard_to_remote` | boolean | When `true`, users can paste text from their local client to the browser-based RDP session. Defaults to `false`. |
| `allow_remote_clipboard_to_local` | boolean | When `true`, users can copy text from the browser-based RDP session to their local client. Defaults to `false`. |

</TabItem>
<TabItem label="Terraform">

Use the `connection_rules` block within a [`cloudflare_zero_trust_access_policy`](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/zero_trust_access_policy) resource:

```tf
resource "cloudflare_zero_trust_access_policy" "rdp-policy" {
application_id = cloudflare_zero_trust_access_application.rdp-app.id
account_id = var.cloudflare_account_id
name = "Allow engineers with restricted clipboard"
decision = "allow"
precedence = 1

include {
email_domain = ["example.com"]
}

connection_rules {
rdp {
allow_local_clipboard_to_remote = true
allow_remote_clipboard_to_local = false
}
}
}
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not a boolean, but an array of allowed formats for that particular direction. Currently, only text is supported. Set the array to empty ([]) to block all copy/paste actions for that particular direction.

RDP Connection Rules Schema

Object: connection_rules.rdp (optional)

Field Type Required Description Valid Values
allowed_clipboard_local_to_remote_formats array[string] No Clipboard formats allowed when copying from local machine to remote RDP session ["text"] or []
allowed_clipboard_remote_to_local_formats array[string] No Clipboard formats allowed when copying from remote RDP session to local machine ["text"] or []

Both Directions Example

{
  "connection_rules": {
    "rdp": {
      "allowed_clipboard_local_to_remote_formats": ["text"],
      "allowed_clipboard_remote_to_local_formats": ["text"]
    }
  }
}

Empty RDP Rules (No Clipboard Access)

{
  "connection_rules": {
    "rdp": {
      "allowed_clipboard_local_to_remote_formats": [],
      "allowed_clipboard_remote_to_local_formats": []
    }
  }
}

Comment on lines +263 to +269
connection_rules {
rdp {
allow_local_clipboard_to_remote = true
allow_remote_clipboard_to_local = false
}
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

connection_rules = {
   rdp = {
      allowed_clipboard_local_to_remote_formats = ["text"]
      allowed_clipboard_remote_to_local_formats = []
    }
}

Use the `connection_rules` block within a [`cloudflare_zero_trust_access_policy`](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/zero_trust_access_policy) resource:

```tf
resource "cloudflare_zero_trust_access_policy" "rdp-policy" {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some syntax errors in this resource:

  • application_id is not supported as a top-level field in cloudflare_zero_trust_access_policy. cloudflare_zero_trust_access_policy represents a reusable policy; you can add it as an attachment to Access applications in cloudflare_zero_trust_application.policies field.
  • precedence is not valid in this resource for the same reason as above
  • Fix: include needs =:
include = [{
    email_domain = {
      domain = "cloudflare.com"
    }
  }]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants